#!/bin/bash
###############################################################################
#       脚本名称: unit_config.sh
#       功能描述: config配置模块单元测试脚本
#       作者: 林再来
#       日期: 2025-10-15
#       版本: 1.0
###############################################################################

cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1

# 颜色定义
COLOR_GREEN='\033[0;32m'
COLOR_RED='\033[0;31m'
COLOR_BLUE='\033[0;34m'
COLOR_RESET='\033[0m'

# 统计
TOTAL_SUITES=0
PASSED_SUITES=0
FAILED_SUITES=0

echo "========================================"
echo "配置模块完整测试套件"
echo "========================================"
echo ""

###############################################################################
# 单元测试
###############################################################################

echo -e "${COLOR_BLUE}═══════════════════════════════════════════${COLOR_RESET}"
echo -e "${COLOR_BLUE}单元测试${COLOR_RESET}"
echo -e "${COLOR_BLUE}═══════════════════════════════════════════${COLOR_RESET}"
echo ""

# YAML配置适配器测试
echo "运行: YAML配置适配器单元测试"
if bash test_yaml.sh 2>/dev/null; then
    echo -e "${COLOR_GREEN}✓ YAML配置适配器测试通过${COLOR_RESET}"
    ((PASSED_SUITES++))
else
    echo -e "${COLOR_RED}✗ YAML配置适配器测试失败${COLOR_RESET}"
    ((FAILED_SUITES++))
fi
((TOTAL_SUITES++))
echo ""

# JSON配置适配器测试
echo "运行: JSON配置适配器单元测试"
if bash test_json.sh 2>/dev/null; then
    echo -e "${COLOR_GREEN}✓ JSON配置适配器测试通过${COLOR_RESET}"
    ((PASSED_SUITES++))
else
    echo -e "${COLOR_RED}✗ JSON配置适配器测试失败${COLOR_RESET}"
    ((FAILED_SUITES++))
fi
((TOTAL_SUITES++))
echo ""

# ENV处理器测试
echo "运行: ENV处理器单元测试"
if bash test_env.sh; then
    echo -e "${COLOR_GREEN}✓ ENV处理器测试通过${COLOR_RESET}"
    ((PASSED_SUITES++))
else
    echo -e "${COLOR_RED}✗ ENV处理器测试失败${COLOR_RESET}"
    ((FAILED_SUITES++))
fi
((TOTAL_SUITES++))
echo ""

# INI处理器测试
echo "运行: INI处理器单元测试"
if bash test_ini.sh; then
    echo -e "${COLOR_GREEN}✓ INI处理器测试通过${COLOR_RESET}"
    ((PASSED_SUITES++))
else
    echo -e "${COLOR_RED}✗ INI处理器测试失败${COLOR_RESET}"
    ((FAILED_SUITES++))
fi
((TOTAL_SUITES++))
echo ""

# 统一接口测试
echo "运行: 统一配置接口单元测试"
if bash test_config.sh; then
    echo -e "${COLOR_GREEN}✓ 统一配置接口测试通过${COLOR_RESET}"
    ((PASSED_SUITES++))
else
    echo -e "${COLOR_RED}✗ 统一配置接口测试失败${COLOR_RESET}"
    ((FAILED_SUITES++))
fi
((TOTAL_SUITES++))
echo ""

###############################################################################
# 集成测试
###############################################################################

echo -e "${COLOR_BLUE}═══════════════════════════════════════════${COLOR_RESET}"
echo -e "${COLOR_BLUE}集成测试${COLOR_RESET}"
echo -e "${COLOR_BLUE}═══════════════════════════════════════════${COLOR_RESET}"
echo ""

# 多格式配置测试
echo "运行: 多格式配置集成测试"
if bash ../../integration/config/test_multi_format.sh; then
    echo -e "${COLOR_GREEN}✓ 多格式配置测试通过${COLOR_RESET}"
    ((PASSED_SUITES++))
else
    echo -e "${COLOR_RED}✗ 多格式配置测试失败${COLOR_RESET}"
    ((FAILED_SUITES++))
fi
((TOTAL_SUITES++))
echo ""

# 真实场景测试
echo "运行: 真实场景集成测试"
if bash ../../integration/config/test_real_world.sh; then
    echo -e "${COLOR_GREEN}✓ 真实场景测试通过${COLOR_RESET}"
    ((PASSED_SUITES++))
else
    echo -e "${COLOR_RED}✗ 真实场景测试失败${COLOR_RESET}"
    ((FAILED_SUITES++))
fi
((TOTAL_SUITES++))
echo ""

###############################################################################
# 测试汇总
###############################################################################

echo "========================================"
echo "测试汇总"
echo "========================================"
echo "总测试套件数: $TOTAL_SUITES"
echo -e "${COLOR_GREEN}通过: $PASSED_SUITES${COLOR_RESET}"
echo -e "${COLOR_RED}失败: $FAILED_SUITES${COLOR_RESET}"
echo "========================================"

if [[ $FAILED_SUITES -eq 0 ]]; then
    echo -e "${COLOR_GREEN}✓ 所有测试通过！${COLOR_RESET}"
    exit 0
else
    echo -e "${COLOR_RED}✗ 有测试失败，请检查上面的输出${COLOR_RESET}"
    exit 1
fi

